/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package sgbd;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author julio
 */
public class CidadeDAO {
    
    private Connection cn;
    private static final String sqlinsert = "insert into cidade (nome,uf,taxa)values(?,?,?)";
    private static final String sqlselect = "select * from cidade";
    private static final String sqlupdate = "update cidade set nome=?,uf=?,taxa=? where codigo=?";
    private static final String sqldelete = "delete from cidade where codigo=?;";
    
    public CidadeDAO() throws IOException, FileNotFoundException, ClassNotFoundException, SQLException {
        this.cn =  new ConnectionFactory().getConnection();
    }  
   public void insertCidade(CidadeDTO cidade) throws SQLException{
       PreparedStatement stmt = cn.prepareStatement(sqlinsert);
       stmt.setString(1, cidade.getNome());
       stmt.setString(2, cidade.getUf());
       stmt.setDouble(3, cidade.getTaxa());
        stmt.execute();
        stmt.close();
        cn.close();      
   }
   public void updateCidade(CidadeDTO cidade) throws SQLException{
       PreparedStatement stmt = cn.prepareStatement(sqlupdate);
       stmt.setString(1, cidade.getNome());
       stmt.setString(2, cidade.getUf());
       stmt.setDouble(3, cidade.getTaxa());
       stmt.setInt(4, cidade.getCodigo());
       stmt.execute();
       stmt.close();
       cn.close();     
   }
   public List<CidadeDTO> selectCidade(CidadeDTO cidade) throws SQLException{
         List<CidadeDTO> lista = new ArrayList();
     PreparedStatement stmt = cn.prepareStatement(sqlselect);
     ResultSet rs = stmt.executeQuery();
     while(rs.next()){
         CidadeDTO city = new CidadeDTO();
         city.setCodigo(rs.getInt("Codigo"));
         city.setNome(rs.getString("nome"));
         city.setTaxa(rs.getDouble("taxa"));
         city.setUf(rs.getString("UF"));
        lista.add(city);
     }
     return lista;
   }
   public void deleteCidade(int codigo) throws SQLException{
       PreparedStatement stmt = cn.prepareStatement(sqldelete);
       stmt.setInt(1, codigo);
       stmt.execute();
       stmt.close();
       cn.close();   
   }
}
